perm filename KI.SAI[KI,ALS]1 blob
sn#091992 filedate 1974-03-21 generic text, type T, neo UTF8
00010 BEGIN "KI"
00020 DEFINE ⊂="COMMENT",CR="'15",LF="'12", CRLF="CR&LF",TB="'11";
00030 ⊂ The master control program for the KI KA KU system. This program
00040 calls on various subroutines to perform the required functions of
00050 a simple speech communication system which can converse with a speaker
00060 after a minimum amount of adaptive learning in a very simple code
00070 involving the principle vowel sounds pronounced following the stop
00080 consonant "K". The hope is that the system can operate over the
00090 telephone in a reasonably noisy environment with a group of perhaps 100
00100 different speakers;
00110
00120 REQUIRE "TRACK[KI,ALS]" LOAD_MODULE;
00130 EXTERNAL PROCEDURE TRACK;
00140 INTERNAL INTEGER SPX;
00150 INTERNAL INTEGER ARRAY SPOOR[0:6,0:20];
00160 INTEGER CHAN1,CHAN2,I,J,K,L,Z,EOF,BRCHR; BOOLEAN ER;
00170 STRING READ;
00180 INTEGER ARRAY ADSAY,ADHEAR[0:5];
00190
00200 LABEL STARTP;
00210
00220
00230 PROCEDURE SAY(STRING UTTER);
00240 BEGIN "SAY"
00250
00260 CLOSE(CHAN1) ; OPEN(CHAN1,"DSK",0,0,1,0,EOF,0);
00270 ENTER(CHAN1,"KIFILE.TMP",0);
00280 ⊂ KIFILE to contain name of file to say;
00290 OUT(CHAN1,UTTER);
00300 CLOSE(CHAN1); RELEASE(CHAN1);
00310 COMMENT Preset ESC 4 U ;
00320 START_CODE MOVEI 0,ADSAY[0]; CALLI '400004; END;
00330 ⊂ This starts program KISAY as a separate job;
00340 END "SAY";
00350
00360
00370 PROCEDURE HEAR;
00380 BEGIN "HEAR"
00390
00400 COMMENT Preset ESC ?? to start ADC;
00410 START_CODE MOVEI 0,ADHEAR[0]; CALLI '400004; END;
00420 ⊂ This starts program KIHEAR as a separate job;
00430 ⊂ Program KIHEAR records an input utterance in file LISTEN.TMP;
00440
00450 ER←1; I←0;
00460 START_CODE MOVEI 0,4; '047000000031; END;
00470 ⊂ Sleep for 4 seconds before trying;
00480
00490 WHILE ER DO BEGIN "GETFIL"
00500 ⊂ CLOSE(CHAN2); ⊂ OPEN(CHAN2,"DSK",'10,2,0,0,0,EOF);
00510 CLOSE(CHAN2); OPEN(CHAN2,"DSK",0,1,0,10,BRCHR,EOF);
00520 LOOKUP(CHAN2,"LISTEN.TMP[KI,ALS]",ER);
00530 I←I+1; IF I=10 THEN OUTSTR("PROGRAM HUNG ON LISTENING, WILL TRY SOME MORE");
00540 IF I=20 THEN DONE "GETFIL";
00550 START_CODE MOVEI 0,2; '047000000031; END;
00560 ⊂ Sleep for 2 seconds more;
00570 END "GETFIL";
00580 outstr("The file LISTEN should be opened now"&crlf);
00590 IF I=20 THEN READ←"FAILED" ELSE
00600 READ←INPUT(CHAN2,1);
00610 CLOSE(CHAN2);
00620 OUTSTR("Reading LISTEN as "&READ&CRLF);
00630 END "HEAR";
00640
00650
00660 STRING PROCEDURE HEARIT(STRING EH);
00670 BEGIN "HEARIT"
00680 HEAR;
00690 IF EH="YES" THEN BEGIN "YES"
00700
00710 RETURN("YES");
00720 END "YES" ELSE BEGIN "NO"
00730 OUTSTR("In else branch for a NO answer"&CRLF);
00740 END "NO";
00750 END "HEARIT";
00760
00770 PROCEDURE ASKNAM;
00780 BEGIN "ASK"
00790
00800 OUTSTR("In procedure ASKNAM"&crlf);
00810
00820 END "ASK";
00830
00840
00850
00860 PROCEDURE TABLE;
00870 BEGIN
00880
00890 INTEGER I,J;
00900
00910 OUTSTR(CRLF&TB&"Track output"&crlf&TB&"Sample"&TB&"F1"&TB&"F2"&TB&"F3"
00920 &TB&"A1"&TB&"A2"&TB&"A3"&CRLF);
00930 Z←2500%256;
00940 FOR J←0 STEP 1 UNTIL 20 DO BEGIN
00950 IF SPOOR[1,J]=0 THEN DONE;
00960 OUTSTR(CVS(J)&TB);
00970 FOR I←0 STEP 1 UNTIL 6 DO OUTSTR(CVS(SPOOR[I,J])&TB);
00980 OUTSTR(CRLF);
00990 END;
01000 END;
00010 CHAN1←1; CHAN2←2; Z←2500%256;
00020 STDBRK(1);
00030
00040 ADSAY[0]←CVSIX("DSK");
00050 ADSAY[1]←CVSIX("KISAY ");
00060 ADSAY[2]←CVSIX("DMP") LOR '4;
00070 ADSAY[3]←0;
00080 ADSAY[4]←CVSIX(" KIALS");
00090 ADSAY[5]←CVSIX(" KIALS");
00100
00110 ADHEAR[0]←CVSIX("DSK");
00120 ADHEAR[1]←CVSIX("KIHEAR");
00130 ADHEAR[2]←CVSIX("DMP") LOR '4;
00140 ADHEAR[3]←0;
00150 ADHEAR[4]←CVSIX(" KIALS");
00160 ADHEAR[5]←CVSIX(" KIALS");
00170
00180
00190 STARTP:
00200
00210 OUTSTR("Ready to say hello."&crlf);
00220 OUTSTR("Actually it will recite SEG1."&CRLF);
00230 ⊂ SAY("HELLO");
00240 ⊂ HELLO says Hello, This is KIKAKU. Have you talked to me before? ;
00250 ⊂ OUTSTR("LISTEN now reports the word TEST in ascii"&crlf);
00260 ⊂ REPEAT asks that a simple sentence be repeated;
00270 ⊂ CALL(0,EXIT);
00280 HEAR;
00290 TRACK;
00300 TABLE; INCHWL;
00310 ⊂ ASKNAM;
00320
00330
00340 END;